package me.dwk.dandan.function.functions;
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements. See the NOTICE file distributed with this
 * work for additional information regarding copyright ownership. The ASF
 * licenses this file to You under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
 * or agreed to in writing, software distributed under the License is
 * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 */

import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import java.util.UUID;

import me.dwk.dandan.function.AbstractFunction;
import me.dwk.dandan.function.CompoundVariable;
import me.dwk.dandan.function.exception.InvalidVariableException;

/**
 * Function to create a UUID
 *
 * Parameters: - None
 *
 * Returns: - A pseudo random UUID 4
 *
 * @since 2.9
 */
public class Uuid extends AbstractFunction {

	private static final List<String>	desc	= new LinkedList<>();

	private static final String			KEY		= "__UUID";				//$NON-NLS-1$

	public Uuid() {}

	@Override
	public String execute() throws InvalidVariableException {
		return UUID.randomUUID().toString();
	}

	@Override
	public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {
		checkParameterCount(parameters, 0, 0);
	}

	@Override
	public String getReferenceKey() {
		return KEY;
	}

	@Override
	public List<String> getArgumentDesc() {
		return desc;
	}

}
